iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
自我挑戰組

從零打造客製化 AI 聊天機器人系列 第 12

[從零打造客製化 AI 聊天機器人] Prompt Engineering 實作

  • 分享至 

  • xImage
  •  

今天我們要通過設計一個具體的 Prompt Engineering 來製作聊天機器人內容,假設我們要製作一個 AI 聊天機器人,主要可以提供台北文化類型的旅遊建議。

需求:建立一個文化類型旅遊聊天機器人,讓 AI 根據使用者的喜好來推薦台北的旅遊景點

  1. 定義使用者需求:

    • 旅遊類型偏好:文化
    • 交通工具:捷運
    • 景點介紹:包含歷史
  2. 設計 Prompt :
    針對使用者需求,設計引導式 Prompt 讓 AI 生成旅遊建議

    prompt = """
        請根據以下條件,推薦台北的一個文化旅遊景點,並提供簡單的歷史背景:
        1. 景點類型:文化
        2. 交通:捷運
    """
    

程式碼實作:

from openai import AzureOpenAI
from openai_config import *

client = AzureOpenAI(
    azure_endpoint=azure_endpoint,
    api_key=api_key,
    api_version=api_version
)


def get_prompt_response(prompt_text):
    try:
        response = client.chat.completions.create(
            model=model_name,
            messages=[
                {"role": "system", "content": "You are a helpful assistant."},
                {"role": "user", "content": prompt_text}  # 使用者輸入
            ],
            temperature=0,  # 表示回應會更確定和保守,值越高(接近1),回應會越創意和隨機
            max_tokens=500,  # 控制回答長度
            top_p=0.95,  # 則限制了回應的隨機性,值越低回應越確定
            frequency_penalty=0,  # 調控進行推論時特定詞彙出現的頻率
            presence_penalty=0,  # 調控推論生成的內容中引入新概念或詞彙的傾向性
            stop=None
        )
        
        # 取得 AI 回應
        return  response.choices[0].message.content

    except Exception as e:
        print(f"Error: {e}")
        return None    
    
# 定義 Prompt,這裡可以是任何你想要的提示
base_prompt = """
請根據以下條件,推薦台北的一個文化旅遊景點,並提供簡單的歷史背景:
1. 景點類型:文化
2. 交通:捷運
""" .strip()

while True:
     # 使用者輸入
    user_input = input("你: ")
    if user_input.lower() == "exit":  # 用戶输入 'exit'退出
        break

    # 將固定的 prompt 和使用者輸入結合
    full_prompt = f"{base_prompt}\n使用者補充要求:{user_input}"

    # 調用函數獲取 AI 的回應
    response = get_prompt_response(full_prompt)
    print(f"AI 回應: {response}")

base_prompt:最初設置的 prompt,描述了基本需求,推薦台北文化旅遊景點。
user_input:使用者輸入的內容會被附加到 base_prompt 後面,使得每次 AI 都能同時考慮預設提示和使用者的需求。
full_prompt:將 base_promptuser_input 結合成一個完整的 prompt 傳遞給 AI。
get_prompt_response:使用 full_prompt 作為提示,動態給 AI 生成回應。

藉由提示詢問後得到的回應:
https://ithelp.ithome.com.tw/upload/images/20240925/20169415J9ZUwemoAU.png

當我們把提示刪除不使用提示,所得到回應,就不會包含文化景點、交通工具和歷史內容。不使用這些具體提示,AI 的回應會變得更廣泛,因為它沒有收到具體的指示去聚焦在某些特定的主題上。
https://ithelp.ithome.com.tw/upload/images/20240925/201694153RQWTK3wY6.png

以上就是 Prompt Engineering 的簡單應用,藉由 Prompt 設置具體條件與格式控制,可以生成更準確、實用的回應方式,這種方式也可以使用在其他情境,例如:技術支援、數據查詢或自動生成報告等等。


上一篇
[從零打造客製化 AI 聊天機器人] Prompt Engineering
下一篇
[從零打造客製化 AI 聊天機器人] 向量資料庫概念與 ChromaDB
系列文
從零打造客製化 AI 聊天機器人14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言